class People {
  // ES6通过constructor()方法 ,构造器来实现
  protected name: string;
  public age: number;
  constructor(name: string, age: number) {
    // 实例属性
    this.name = name;
    this.age = age;
  }
  say(): void {
    //void 没有返回值
    console.log("我会说话！");
  }
}
// 子类继承父类
class Student extends People {
  public num: string;
  constructor(name: string, age: number, num: string) {
    super(name, age);
    this.num = num;
  }
  study(): void {
    console.log(`我的名字叫${this.name},年龄是${this.age}`);
  }
}

const stuA = new Student("李强", 5, "A1");
stuA.study();
console.log(stuA.name);

// 封装：找到变化并且把它封装起来，你就可以在不影响其它部分的情况下修改或扩展被封装的变化部分，
// 这是所有设计模式的基础，就是封装变化，因此封装的作用，就解决了程序的可扩展性。
